/**
 * radio.js 和 listenRadio.js - 实现收音机广播程序
 * 任务要求：
 * 1. 使用 util.inherits 让 Radio 类继承 EventEmitter
 * 2. 创建 radio.js 和 listenRadio.js 两个文件 (此处为 2.js)
 * 3. radio.js 中定义 Radio 构造函数，包含 play 和 stop 方法
 * 4. listenRadio.js 中导入 radio.js 并调用相关方法
 */

const EventEmitter = require('events');
const util = require('util');

// 任务1：使用 util.inherits 让 Radio 类继承 EventEmitter
function Radio(name, frequency) {
    EventEmitter.call(this);
    this.name = name;
    this.frequency = frequency;
}

// 使用 util.inherits 实现继承
util.inherits(Radio, EventEmitter);

// 任务3：定义 play 和 stop 方法
Radio.prototype.play = function() {
    // 触发 'open' 事件
    this.emit('open');
};

Radio.prototype.stop = function() {
    // 触发 'close' 事件
    this.emit('close');
};

// 任务4：listenRadio.js 的实现
// 创建 Radio 实例
const radio = new Radio('music radio', 'FM 106.7');

// 监听 'open' 事件
radio.on('open', function() {
    console.log(`"${this.name}" ${this.frequency} opened`);
    
    // 2秒后输出 lalala...
    setTimeout(() => {
        console.log('lalala...');
    }, 2000);
});

// 监听 'close' 事件
radio.on('close', function() {
    console.log(`"${this.name}" ${this.frequency} closed`);
});

// 执行收音机操作
console.log('开始收音机广播程序...');

// 打开收音机
radio.play();

// 3秒后关闭收音机（给足够时间显示完整流程）
setTimeout(() => {
    radio.stop();
    console.log('程序结束');
}, 5000);
